﻿/********************************************************************************
** @ Date:2025/07/31
** @ Author: Gaojia
** @ Description:
** @ Version:1.0.0
** @ Fun:
********************************************************************************/
#ifndef CBeltDataBase_H
#define CBeltDataBase_H
#include <QMutex>
#include <QString>
#include <QObject>
#include <QLabel>
#include <QVector>
#include "CMeasurePoint.h"
enum ECCmdType
{
	enCRun,      //开启检测
	enCStop,     //关闭检测
	enCPlay,     //开启预览 
	enCStopPlay  //停止预览
};


struct SCtrInfo
{
	ECCmdType m_enCtrCmd; //控制命令 0 开启皮带撕裂检测  1 关闭皮带撕裂检测 2 开启视频预览 3 关闭预览  
	HWND m_hHwnd;       //视频预览句柄
	QLabel *m_pLabel;   //视频窗口对象
	bool m_bCtrSync;    //同步控制/异步控制
	QString m_sReData;  //控制返回的信息
	SCtrInfo()
	{
		m_enCtrCmd = enCRun;
		m_hHwnd = nullptr;
		m_pLabel = nullptr;
		m_bCtrSync = false;
		m_sReData = "";
	}
};


class CBeltDataBase :public QObject
{
	Q_OBJECT
public:
	CBeltDataBase();
	~CBeltDataBase();

public:
	QMutex* m_pMutex;		//数据访问锁
	QString m_sId;          //上层管理Id       
	QString m_sName;        //设备名称
	QString m_sGuid;        //驱动内部自己使用的ID 
	QString m_sBeltGuid;    //皮带Guid
	QString m_sBeltName;    //皮带名称
	QString m_sCameraIp;    //相机ip
	QString m_sRtspUrl;     //视频url地址
	double m_dKaMax;        //最大曲率
	int m_nCamerState;		//摄像头状态 0:正常 1:异常
	int m_nAlarmType;       //报警类型 0:正常识别 1:识别到撕裂 2:其他异常
	int m_nMaskSum;         //图像红色素提取像素和
	int m_nLineHight;       //激光线高度
	bool m_bBeltWork;		//是否开始检测 true 是  false 否
	bool m_bWipersWork;     //雨刮器是否工作
	QMap<QString, CMeasurePoint*>m_mapInputPoint; //输入测点列表
};

#endif